File:  of Disk: Disks/MyPDP/m8-blue-rka1-rkb1
(Source file text) 

/CB.TK 12-JUN-80

/THIS MODULE INTERPRETS THE INPUT THAT THE INPUT READER
/OF A BACKGROUND HAS ACCUMULATED. IT IS ENTERED WITH
/A POINTER TO THE BACKGROUNDS DATA AREA IN THE AC.
/IT READS THE COMMAND FROM THE NORMAL INPUT BUFFER.
/COMMANDS:
/
/AC 1234		SET THE BACKGOUNDS AC
/BOOT			BOOTSTRAP OS/8 FOR THIS BG
/CONTINUE		CONTINUE BG EXECUTION
/DELAY 1,215		SUPPLY 1 FILLER AFTER 215
/ESCAPE 376		ON INPUT, CONVERT 376 TO 233
/FIELD 12		SET THE BG INSTRUCTION AND DATAFIELD
/HOOK BG5		HOOK THIS TERMINAL TO BG # 5
/KILL			RESTART THE BG AT 7600, FIELD 0
/LEFT 225		ON OUTPUT CONVERT 210 (BACKSPACE) TO 225
/PC 1234		SET PC TO 1234
/QUIT			RUNS EXIT TASK OF MULTI-8
/RESTORE		RELOAD OS/8 ON THE BACKGROUND DISK
/SWITCH 1234		SET USERS SWITCH REGISTER TO 1234
/TALK			RUNS TALK TASK
/WHERE			RUNS THE CURRENT STATUS PRINTER OF THIS BG
/ZAP			DISCARD CURRENT LPT SPOOL OUTPUT FILE
/
/THE COMMANDS ARE RECOGNISED ON THE FIRST CHARACTER ONLY,
/THEN THE INPUT IS SCANNED FOR A NUMBER.
	"C^100+"B&3777	/NAME IS "CB"
	600		/THREE PAGE, NO CONNECTS
/JUMP TABLE FOR COMMAND A-Z
	CBAC		/A AC=1234
	CBBOOT		/B BOOT
	CBXIT		/C CONTINUE
	CBDELAY		/D DELAY 3 FILLERS FOR 212
	CBESCAPE	/E ESCAPE FROM THIS TERMINAL IS 275
	CBFIELD		/F FIELDS=33
	CBERROR		/G -
	CBHOOK		/H HOOK BG3
	CBERROR		/I -
	CBERROR		/J -
	CBKILL		/K KILL
	CBLEFT		/L LEFT (BACKSPACE) = 225
	CBERROR		/M -
	CBERROR		/N -
	CBERROR		/O -
	CBPC		/P PC=7600
	CBQUIT		/Q QUIT (LEAVE MULTI8/SINGL8)
	CBRESTOR	/R RESTORE OS8 ON THIS BG
	CBSWITCH	/S SWITCHREGISTER=7700
	CBTALK		/T TALK 1:BLA BLA BLA (NYI)
	CBERROR		/U -
	CBERROR		/V -
	CBWHERE		/W WHERE IS MY BG ?
	CBERROR		/X -
	CBERROR		/Y -
	CBZAP		/Z ZAP THE LPT SPOOLER OUTPUT
CBLIST,	.-1		/WILL BE ABSOLUTISED BY OUR DEAR MONITOR
XCBPUT,	CBPUT
CBCOMND,.
CBNUMB,	0
CB,	DCA BASE	//USES SAME ZTEM AS RESIDENT CODE
	JMS CBREAD	//GET THE FIRST CHARACTER
	TAD M215	/EMPTY LINE ?
	SNA
	 JMP CBNEXT	/YES, IGNORE THIS LINE
	TAD C215
	DCA CBCOMND	/IT DETERMINES THE ACTUAL COMMAND
CBLOOP,	JMS CBREAD
	TAD M215
	SNA
	 JMP CBRNCH	/END OF LINE: DO IT NOW
	TAD (215-230	/SEE IF IT IS A NUMBER
	SMA
	 JMP CBLOOP	/NO, SKIP IT
	TAD (10
	SPA
	 JMP CBLOOP	/NOT OCTAL, SKIP IT
	DCA ZTEM1
	TAD CBNUMB	/CBNUMB STARTS OFF ZERO
	CLL RTL
	RAL
	AND C7770
	TAD ZTEM1
	DCA CBNUMB	/WE HAVE TAKEN THE NEW OCTIDE IN ACCOUNT
	JMP CBLOOP	/SEE IF THERE'S MORE

CBRNCH,	TAD CBCOMND	/GET COMMAND CHARACTER
	TAD (-"A	/RANGE CHECK A-Z
	SPA		/
	 JMP CBERROR	/
	TAD ("A-"Z	/
	SMA SZA		/
	 JMP CBERROR	/
	TAD CBLIST	/ADD END OF JUMP TABLE
	JMS DEFER	/GET JUMP ADDRESS
	DCA X		/
	JMP I X		/AND JUMP !
CBREAD,	0		/READ A CHAR FROM INPUT BUFFER
	CLA CLL
	CDTOIF
	CIF 10
	JMS I (MTQ
	   UBUFIN
	 JMP CBERROR
	AND (337	/KILL LOWERCASE BIT
	JMP I CBREAD

CBAC,	TAD CBNUMB	/STORE CBNUMB IN USERS AC
	JMS I XCBPUT
	   UAC
	JMP CBNEXT	/ASK FOR NEW COMMANDS

CBSWITCH,TAD CBNUMB
	JMS I XCBPUT
	   USW
	JMP CBNEXT	/ASK FOR MORE

CBPC,	TAD CBNUMB
	JMS I XCBPUT
	   UPC		/DROP IN HIS PC
	JMP CBNEXT

CBFIELD,TAD CBNUMB
	AND (6077	/LINK, GTF AND FIELD BITS
	TAD (100	/SET USERMODE
	JMS I XCBPUT
	   UFLDS
	CDF 10
	DCA I (BJOB	/MAKE SURE MEMORY MANAGEMENT IS RELOADED
CBNEXT,	AC0001		/1 IS GET-NEXT-COMMAND RETURN
CBXIT,	JMS MONITOR
	   EXIT SWPOUT
CBERROR,ACM1		/SEVERAL ERRORS SHOW ?
	JMP CBXIT
CBKILL,	TAD C7600
	JMS I XCBPUT
	   UPC
	AC0100		/SET USERMODE, FIELD 00
	JMS I XCBPUT
	   UFLDS
	CDF 10
	DCA I (BJOB	/MAKE SURE MEMORY MANAGEMENT IS RELOADED
	JMP CBXIT	/AND START THE BG

CBZAP,	JMS MONITOR	/STOP THE LP SPOOLER AND
	   BREAK	/DISCARD THE CURRENT OUTPUT FILE
	   "P^100+"S&3777
	 NOP		/IGNORE ERRORS
	JMP CBNEXT	/OTHER COMMANDS ?

PAGE
BOXDTV,	BODTV		/RELOCATED POINTER
BOLAMP,	CBLAMP
BOUSTAT,0		/POINTER TO STATUS WORD

/TRANSFERVECTOR:
BODTV,	0400
	7000
	0040		/OS/8 SCRATCH BLOCK

FLAG,	0

CBREST,	ISZ FLAG	/RESTORE
CBBOOT,	CDF 10		/BOOT
	TAD BASE
	DCA BOUSTAT
	TAD I BOUSTAT	/LOOK IF WE CAN DO IT
	AND (INACTIVE+EMULATE+INCORE
	SMA SZA
	 JMP BOERR	/NO, BG IS UNSAFE
	SMA CLA
	 JMP BOOTOK	/HE'S RUNNING, PROCEED
	TAD BOUSTAT	/HE'S INACTIVE. IS THAT SAFE ?
	TAD (UCUR
	JMS DEFER
	TAD M4		/ADDRESS OF BACKLINK OF CE
	CDF 0		//
	JMS DEFER	//
	CDF 10		/
	SZA CLA		/IF HE DID EXIT, IT'S OK
	 JMP BOERR	/NOGO, TO DANGEROUS
BOOTOK,	TAD I BOUSTAT	/REQUEST FIELD 0 IN CORE
	AND (-INACTIVE-EMULATE-BGSTOP-INCORE-1
	TAD (INCORE	/SET INCORE
	DCA I BOUSTAT
	JMS MONITOR	/GO AND TELL THE BG SCHEDULER
	   SIGNAL
	   BSSLOT
	TAD BOUSTAT	/FIND SLOT TO WAIT
	TAD (USLOT
	JMS DEFER
	DCA BOSLOT
	JMS MONITOR	/WAIT FOR BG IN CORE
	   WAIT
BOSLOT,	   0		/OVERLAID WITH CORRECT SLOT#
	TAD BODTV	/GOT REAL FIELD IN 6-8
	DCA BODTV	/SET FUNCTION WORD
	CDTOIF		/THE ACTUAL TRANSFER-AND-WAIT
	TAD BOXDTV
	JMS MONITOR
	   CALL
	   "S^100+"Y&3777
	 JMP .-3	/BUSY? REPEAT
	DCA .+3		/SAVE SLOT TO WAIT FOR
	JMS MONITOR
	   WAIT
	   0
	CDF 10
	SZA CLA
	 JMP BOERR
	AC0002		/TAD (UPC-1
	TAD BOUSTAT
	DCA AUTO10
	TAD (7200
	TAD FLAG	/ADD 1 IF RESTORE
	DCA I AUTO10	/RESET PC
	AC0100
	DCA I AUTO10	/RESET FIELDS WORD
	DCA I AUTO10	/AND THE AC
	TAD BODTV
	AND C70
	TAD C6201
	DCA BOCDF1
	TAD BOUSTAT
	TAD (UCHNL0+1-1
	DCA AUTO10
	TAD I AUTO10	/GET DEVICE TYPE
	AND C7770	/DISCARD UNIT #
BOCDF1,	  HLT		//
	DCA I (7000	//PUT IN 'BGNUMB'
	CDF 10		//
	TAD ("S^100+"Y&3777	//TASK FOR DSK0
	DCA I AUTO10	//
	TAD (6500	//TYPE AND UNIT FOR DSK0
	DCA I AUTO10	//
	TAD FLAG	//WAS THIS A RESTORE ?
	SNA CLA
	 JMP CBNORS	//NO, LEAVE CHANNELS AS DEFINED
IFDEF SINGL8 <
	TAD ("D^100+"K&3777	//TASK FOR DSK1: >
	DCA I AUTO10	//
IFDEF SINGL8 <
	TAD (6511	//TYPE AND UNIT FOR DSK1: >
	DCA I AUTO10	//
IFDEF SINGL8 <
	TAD ("D^100+"K&3777	//TASK FOR DSK2: >
	DCA I AUTO10	//
IFDEF SINGL8 <
	TAD (6522	//TYPE AND UNIT FOR DSK2: >
	DCA I AUTO10	//
CBNORS,	TAD (-EMULATE-1	//CLEAR EMULATE BIT
	AND I BOUSTAT	//
	DCA I BOUSTAT	//
	TAD	BOUSTAT	//WITH BASE IN AC
	JMP I	BOLAMP	//GO LIGHT THE LEDS

BOERR,	 ACM1
	JMS MONITOR
	   EXIT SWPOUT

CBPUT,	0		/SUBROUTINE TO STOR/BECAUSE THAT COULD BE TOO TIME-
	 SKP CLA	///CONSUMING. FIRST TRY IF ALR. UP
	 JMP DTSLFD	///YES, QUICK RETURN
	TAD (-100 //	///TIME-OUT, MUST BE ENOUGH
DTSLLP,	IAC
	SMA
	 JMS I CDTER1 // ///TOO LONG
	SDSS
	 JMP DTSLLP	///NOT YET UP, LOOP UNTIL...
DTSLFD,	SDRC	//	///RETURN WITH COMMAND REGISTER
	JMP I DTSLWT
DTEFUN,	0	//	///I DIDN'T THINK IT'S POSSIBLE TO
	CMA		///WRITE THESE ROUTINES BETTER THAN
	DCA DTETMP	///THE BEST DIGITAL-PEOPLE DID.
	TAD DTETMP //	///SO I DIDN'T TRY TO, AND HEREBY
	AND DTCSUM	///I THANK THEM FOR DOING THE GOOD
	CIA		///THINKING WORK.
	CLL RAL	//
	TAD DTETMP
	TAD DTCSUM
	DCA DTCSUM //
	TAD DTETMP
	CMA
	JMP I DTEFUN //

DTGCHK,	0	//
	TAD DTCSUM
	CMA BSW		///
	JMS DTEFUN
	CLA	//
	TAD DTCSUM
	AND (7700
	JMP I DTGCHK //

			/END IFDEF TD8E >
$